package com.ruoyi.examination.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.examination.dto.ExamRecordInfoDto;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 考试记录-经营性对象 exam_record
 *
 * @author hcc
 * @date 2025-10-28
 */
public class ExamRecord extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 考试记录ID */
    private String examRecordId;

    /** 试卷id */
    @Excel(name = "试卷id")
    private String examPaperId;

    /** 考生用户ID */
    @Excel(name = "考生用户ID")
    private String studentId;

    /** 培训班id */
    @Excel(name = "培训班id")
    private String trainingClassId;

    /** 培训班 */
    @Excel(name = "培训班")
    private String trainingClassName;

    /** 培训项目id */
    @Excel(name = "培训项目id")
    private String trainingProjectId;

    /** 培训项目名称 */
    @Excel(name = "培训项目名称")
    private String trainingProjectName;

    /** 考试编号 */
    @Excel(name = "考试编号")
    private String examNumber;

    /** 考试开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "考试开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date examStartTime;

    /** 考试结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "考试结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date examEndTime;

    /** 实际考试时长(分钟) */
    @Excel(name = "实际考试时长(分钟)")
    private String actualDuration;

    /** 考试总分 */
    @Excel(name = "考试总分")
    private String totalScore;

    /** 理论成绩 */
    @Excel(name = "理论成绩")
    private String theoryResult;

    /** 实操成绩 */
    @Excel(name = "实操成绩")
    private String practicalResult;

    /** 补考成绩 */
    @Excel(name = "补考成绩")
    private String makeUpResult;

    /** 考试结果 */
    @Excel(name = "考试结果")
    private String examResult;

    /** 考试次数 */
    @Excel(name = "考试次数")
    private String examFrequency;

    /** 补考标记 */
    @Excel(name = "补考标记")
    private String makeUpMark;

    /** 电子证书 */
    @Excel(name = "电子证书")
    private String electronicCertificate;

    /** 补考情况 */
    @Excel(name = "补考情况")
    private String makeUpStatus;

    /** 是否可二次考试申报 */
    @Excel(name = "是否可二次考试申报")
    private String isSecondExam;

    /** 考试状态 */
    @Excel(name = "考试状态")
    private String examStatus;

    /** 提交类型 */
    @Excel(name = "提交类型")
    private String submitType;

    /** 考试终端IP地址 */
    @Excel(name = "考试终端IP地址")
    private String examIp;

    /** 考试终端坐标 */
    @Excel(name = "考试终端坐标")
    private String examCoordinates;

    /** 设备信息 */
    @Excel(name = "设备信息")
    private String deviceInfo;

    /** 备注 */
    @Excel(name = "备注")
    private String examRecordRemark;

    /** 是否删除 */
    private String delFlag;

    /** $column.columnComment */
    private String exampleOne;

    /** $column.columnComment */
    private String exampleTwo;

    /** $column.columnComment */
    private String exampleThree;

    /** $column.columnComment */
    private String exampleFour;

    /** $column.columnComment */
    private String exampleFive;

    /** 考试记录试题信息 */
    private List<ExamRecordInfoDto> examRecordInfoDtoList;

    public List<ExamRecordInfoDto> getExamRecordInfoDtoList() {
        return examRecordInfoDtoList;
    }

    public void setExamRecordInfoDtoList(List<ExamRecordInfoDto> examRecordInfoDtoList) {
        this.examRecordInfoDtoList = examRecordInfoDtoList;
    }

    public void setExamRecordId(String examRecordId)
    {
        this.examRecordId = examRecordId;
    }

    public String getExamRecordId()
    {
        return examRecordId;
    }

    public void setExamPaperId(String examPaperId)
    {
        this.examPaperId = examPaperId;
    }

    public String getExamPaperId()
    {
        return examPaperId;
    }

    public void setStudentId(String studentId)
    {
        this.studentId = studentId;
    }

    public String getStudentId()
    {
        return studentId;
    }

    public void setTrainingClassId(String trainingClassId)
    {
        this.trainingClassId = trainingClassId;
    }

    public String getTrainingClassId()
    {
        return trainingClassId;
    }

    public void setTrainingClassName(String trainingClassName)
    {
        this.trainingClassName = trainingClassName;
    }

    public String getTrainingClassName()
    {
        return trainingClassName;
    }

    public void setTrainingProjectId(String trainingProjectId)
    {
        this.trainingProjectId = trainingProjectId;
    }

    public String getTrainingProjectId()
    {
        return trainingProjectId;
    }

    public void setTrainingProjectName(String trainingProjectName)
    {
        this.trainingProjectName = trainingProjectName;
    }

    public String getTrainingProjectName()
    {
        return trainingProjectName;
    }

    public void setExamNumber(String examNumber)
    {
        this.examNumber = examNumber;
    }

    public String getExamNumber()
    {
        return examNumber;
    }

    public void setExamStartTime(Date examStartTime)
    {
        this.examStartTime = examStartTime;
    }

    public Date getExamStartTime()
    {
        return examStartTime;
    }

    public void setExamEndTime(Date examEndTime)
    {
        this.examEndTime = examEndTime;
    }

    public Date getExamEndTime()
    {
        return examEndTime;
    }

    public void setActualDuration(String actualDuration)
    {
        this.actualDuration = actualDuration;
    }

    public String getActualDuration()
    {
        return actualDuration;
    }

    public void setTotalScore(String totalScore)
    {
        this.totalScore = totalScore;
    }

    public String getTotalScore()
    {
        return totalScore;
    }

    public void setTheoryResult(String theoryResult)
    {
        this.theoryResult = theoryResult;
    }

    public String getTheoryResult()
    {
        return theoryResult;
    }

    public void setPracticalResult(String practicalResult)
    {
        this.practicalResult = practicalResult;
    }

    public String getPracticalResult()
    {
        return practicalResult;
    }

    public void setMakeUpResult(String makeUpResult)
    {
        this.makeUpResult = makeUpResult;
    }

    public String getMakeUpResult()
    {
        return makeUpResult;
    }

    public void setExamResult(String examResult)
    {
        this.examResult = examResult;
    }

    public String getExamResult()
    {
        return examResult;
    }

    public void setExamFrequency(String examFrequency)
    {
        this.examFrequency = examFrequency;
    }

    public String getExamFrequency()
    {
        return examFrequency;
    }

    public void setMakeUpMark(String makeUpMark)
    {
        this.makeUpMark = makeUpMark;
    }

    public String getMakeUpMark()
    {
        return makeUpMark;
    }

    public void setElectronicCertificate(String electronicCertificate)
    {
        this.electronicCertificate = electronicCertificate;
    }

    public String getElectronicCertificate()
    {
        return electronicCertificate;
    }

    public void setMakeUpStatus(String makeUpStatus)
    {
        this.makeUpStatus = makeUpStatus;
    }

    public String getMakeUpStatus()
    {
        return makeUpStatus;
    }

    public void setIsSecondExam(String isSecondExam)
    {
        this.isSecondExam = isSecondExam;
    }

    public String getIsSecondExam()
    {
        return isSecondExam;
    }

    public void setExamStatus(String examStatus)
    {
        this.examStatus = examStatus;
    }

    public String getExamStatus()
    {
        return examStatus;
    }

    public void setSubmitType(String submitType)
    {
        this.submitType = submitType;
    }

    public String getSubmitType()
    {
        return submitType;
    }

    public void setExamIp(String examIp)
    {
        this.examIp = examIp;
    }

    public String getExamIp()
    {
        return examIp;
    }

    public void setExamCoordinates(String examCoordinates)
    {
        this.examCoordinates = examCoordinates;
    }

    public String getExamCoordinates()
    {
        return examCoordinates;
    }

    public void setDeviceInfo(String deviceInfo)
    {
        this.deviceInfo = deviceInfo;
    }

    public String getDeviceInfo()
    {
        return deviceInfo;
    }

    public void setExamRecordRemark(String examRecordRemark)
    {
        this.examRecordRemark = examRecordRemark;
    }

    public String getExamRecordRemark()
    {
        return examRecordRemark;
    }

    public void setDelFlag(String delFlag)
    {
        this.delFlag = delFlag;
    }

    public String getDelFlag()
    {
        return delFlag;
    }

    public void setExampleOne(String exampleOne)
    {
        this.exampleOne = exampleOne;
    }

    public String getExampleOne()
    {
        return exampleOne;
    }

    public void setExampleTwo(String exampleTwo)
    {
        this.exampleTwo = exampleTwo;
    }

    public String getExampleTwo()
    {
        return exampleTwo;
    }

    public void setExampleThree(String exampleThree)
    {
        this.exampleThree = exampleThree;
    }

    public String getExampleThree()
    {
        return exampleThree;
    }

    public void setExampleFour(String exampleFour)
    {
        this.exampleFour = exampleFour;
    }

    public String getExampleFour()
    {
        return exampleFour;
    }

    public void setExampleFive(String exampleFive)
    {
        this.exampleFive = exampleFive;
    }

    public String getExampleFive()
    {
        return exampleFive;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("examRecordId", getExamRecordId())
                .append("examPaperId", getExamPaperId())
                .append("studentId", getStudentId())
                .append("trainingClassId", getTrainingClassId())
                .append("trainingClassName", getTrainingClassName())
                .append("trainingProjectId", getTrainingProjectId())
                .append("trainingProjectName", getTrainingProjectName())
                .append("examNumber", getExamNumber())
                .append("examStartTime", getExamStartTime())
                .append("examEndTime", getExamEndTime())
                .append("actualDuration", getActualDuration())
                .append("totalScore", getTotalScore())
                .append("theoryResult", getTheoryResult())
                .append("practicalResult", getPracticalResult())
                .append("makeUpResult", getMakeUpResult())
                .append("examResult", getExamResult())
                .append("examFrequency", getExamFrequency())
                .append("makeUpMark", getMakeUpMark())
                .append("electronicCertificate", getElectronicCertificate())
                .append("makeUpStatus", getMakeUpStatus())
                .append("isSecondExam", getIsSecondExam())
                .append("examStatus", getExamStatus())
                .append("submitType", getSubmitType())
                .append("examIp", getExamIp())
                .append("examCoordinates", getExamCoordinates())
                .append("deviceInfo", getDeviceInfo())
                .append("examRecordRemark", getExamRecordRemark())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("exampleOne", getExampleOne())
                .append("exampleTwo", getExampleTwo())
                .append("exampleThree", getExampleThree())
                .append("exampleFour", getExampleFour())
                .append("exampleFive", getExampleFive())
                .append("examRecordInfoDtoList", getExamRecordInfoDtoList())
                .toString();
    }
}
